// pages/HomePage/HomePage.ts
Page({

  /**
   * 页面的初始数据 => 响应式数据仓库
   */
  data: {
    isShowSearch:true,
    searchKeyword: '', // 搜索关键词
    // title:"测试标题"
    types:[
      { title:'猜你喜欢',list:[] },
      { title:'影院热映',list:[] },
      { title:'近期热门',list:[] }
    ],
    source:2
  },
  // 小程序2.1以前的版本，直接在Page方法内定义方法，即可作为页面或逻辑公用方法
  changeState(event:Event){
    // console.log("测试事件",event);
    // console.log("参数",event?.target?.dataset?.state);
    // 小程序的方法存在this指向操作，用于指向于当前页面对象
    // 小程序的响应式是被动响应式，需要开发者通过代码告知小程序变量有了变化，需要更新页面
    //    => 修改和页面存在关系的变量时，不能直接修改变量，需要通过专用的触发器完成 => this.setData
    // this.data.isShowSearch = event.target?.dataset?.state ?? true;
    // setData 接收一个对象，对象中通过定义被修改变量在data中位置规则，描述被修改属性
    this.setData({
      isShowSearch:event.target?.dataset?.state ?? true,
    })
  },
  
  // 监听输入框输入
  onSearchInput(event: any) {
    this.setData({
      searchKeyword: event.detail.value
    })
  },
  
  // 点击搜索或按回车
  onSearchConfirm() {
    const keyword = this.data.searchKeyword.trim();
    if (!keyword) {
      wx.showToast({
        title: '请输入搜索内容',
        icon: 'none'
      });
      return;
    }
    
    // 跳转到搜索结果页面
    wx.navigateTo({
      url: `/pages/FilmListPage/FilmListPage?type=search&title=搜索：${keyword}&keyword=${keyword}`
    });
    
    // 清空搜索框
    this.setData({
      searchKeyword: '',
      isShowSearch: true
    });
  },
  // 小程序2.1以后的版本,在skyline模式，提供另外一种定义规则，将页面或逻辑公用方法定义methods仓库中
  // methods:{
  //   changeState(){
  //     console.log("测试事件");
  //   }
  // }
  initLoadGuess(){
    // wx 小程序的全局内置对象
    // wx.request() 方法时小程序全局内置对象，提供异步请求发送方法
    wx.request({
      url:"https://m.douban.com/rexxar/api/v2/movie/suggestion",
      // 类型必须大写
      method:"GET",
      data:{
        start:0,
        count:10,
        new_struct:1,
        with_review:1,
        for_mobile:1,
        ck:"sew4"
      },
      success:(result)=>{
        this.setData({
          "types[0].list":(result as Result)?.data?.items
        })
      },
      fail:(error)=>{
        console.log(error);
      }
    })
  },
  // 加载影院热映数据
  initLoadShowing(){
    wx.request({
      url:"https://m.douban.com/rexxar/api/v2/subject_collection/movie_showing/items",
      method:"GET",
      data:{
        start:0,
        count:10,
        for_mobile:1,
        ck:"sew4"
      },
      success:(result:any)=>{
        const items = result?.data?.subject_collection_items || [];
        // 统一数据格式，确保有 cover_url 字段
        const formattedItems = items.map((item: any) => ({
          ...item,
          cover_url: item.cover_url || item.cover?.url || item.cover?.large || item.cover?.normal || item.pic?.normal || ''
        }));
        this.setData({
          "types[1].list": formattedItems
        })
      },
      fail:(error)=>{
        console.log(error);
      }
    })
  },
  // 加载近期热门数据
  initLoadLatest(){
    wx.request({
      url:"https://m.douban.com/rexxar/api/v2/subject_collection/movie_latest/items",
      method:"GET",
      data:{
        start:0,
        count:10,
        for_mobile:1,
        ck:"sew4"
      },
      success:(result:any)=>{
        const items = result?.data?.subject_collection_items || [];
        // 统一数据格式，确保有 cover_url 字段
        const formattedItems = items.map((item: any) => ({
          ...item,
          cover_url: item.cover_url || item.cover?.url || item.cover?.large || item.cover?.normal || item.pic?.normal || ''
        }));
        this.setData({
          "types[2].list": formattedItems
        })
      },
      fail:(error)=>{
        console.log(error);
      }
    })
  },
  // 跳转到电影列表详情页
  goToFilmList(event: any) {
    const type = event.currentTarget.dataset.type;
    const title = event.currentTarget.dataset.title;
    wx.navigateTo({
      url: `/pages/FilmListPage/FilmListPage?type=${type}&title=${title}`
    })
  },
  
  // 生命周期-小程序页面创建完成-只会执行一次
  onLoad(){
    this.initLoadGuess();
    this.initLoadShowing();
    this.initLoadLatest();
  }
})